home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / wgdb-42.lha / wgdb-4.2 / gdb / vx-share / xdr_rdb.c < prev    next >
C/C++ Source or Header  |  1992-09-11  |  4KB  |  208 lines

  1. /* xdr_rdb.c  - xdr routines for Remote Debug interface to VxWorks  */
  2.  
  3. /*
  4. modification history
  5. --------------------
  6. 01a,21mar90,llk  created using modification 01d of xdr_dbx.c.
  7. */
  8.  
  9. /*
  10. DESCRIPTION
  11. This module contains the eXternal Data Representation (XDR) routines
  12. for the RDB interface for VxWorks.
  13. */
  14.  
  15. #include "vxWorks.h"
  16. #include <rpc/rpc.h>
  17. #include "xdr_rdb.h"
  18.  
  19. /* forward declarations */
  20.  
  21. bool_t
  22. xdr_arg_type(xdrs, objp)
  23.         XDR *xdrs;
  24.         arg_type *objp;
  25. {
  26.         if (!xdr_enum(xdrs, (enum_t *)objp)) {
  27.                 return (FALSE);
  28.         }
  29.         return (TRUE);
  30. }
  31.  
  32. bool_t
  33. xdr_arg_value(xdrs, objp)
  34.         XDR *xdrs;
  35.         arg_value *objp;
  36. {
  37.         if (!xdr_arg_type(xdrs, &objp->type)) {
  38.                 return (FALSE);
  39.         }
  40.         switch (objp->type) {
  41.         case T_BYTE:
  42.                 if (!xdr_char(xdrs, &objp->arg_value_u.v_byte)) {
  43.                         return (FALSE);
  44.                 }
  45.                 break;
  46.         case T_WORD:
  47.                 if (!xdr_short(xdrs, &objp->arg_value_u.v_word)) {
  48.                         return (FALSE);
  49.                 }
  50.                 break;
  51.         case T_INT:
  52.                 if (!xdr_int(xdrs, &objp->arg_value_u.v_int)) {
  53.                         return (FALSE);
  54.                 }
  55.                 break;
  56.         case T_FLOAT:
  57.                 if (!xdr_float(xdrs, &objp->arg_value_u.v_fp)) {
  58.                         return (FALSE);
  59.                 }
  60.                 break;
  61.         case T_DOUBLE:
  62.                 if (!xdr_double(xdrs, &objp->arg_value_u.v_dp)) {
  63.                         return (FALSE);
  64.                 }
  65.                 break;
  66.         case T_UNKNOWN:
  67.                 break;
  68.         }
  69.         return (TRUE);
  70. }
  71.  
  72. bool_t
  73. xdr_func_call(xdrs, objp)
  74.         XDR *xdrs;
  75.         func_call *objp;
  76. {
  77.         if (!xdr_int(xdrs, &objp->func_addr)) {
  78.                 return (FALSE);
  79.         }
  80.         if (!xdr_array(xdrs, (char **)&objp->args.args_val, (u_int *)&objp->args.args_len, MAX_FUNC_ARGS, sizeof(arg_value), xdr_arg_value)) {
  81.                 return (FALSE);
  82.         }
  83.         return (TRUE);
  84. }
  85.  
  86. bool_t
  87. xdr_arg_one(xdrs, objp)
  88.         XDR *xdrs;
  89.         arg_one *objp;
  90. {
  91.         if (!xdr_string(xdrs, objp, MAX_ARG_LEN)) {
  92.                 return (FALSE);
  93.         }
  94.         return (TRUE);
  95. }
  96.  
  97.  
  98.  
  99.  
  100. bool_t
  101. xdr_arg_array(xdrs, objp)
  102.         XDR *xdrs;
  103.         arg_array *objp;
  104. {
  105.         if (!xdr_array(xdrs, (char **)&objp->arg_array_val, (u_int *)&objp->arg_array_len, MAX_ARG_CNT, sizeof(arg_one), xdr_arg_one)) {
  106.                 return (FALSE);
  107.         }
  108.         return (TRUE);
  109. }
  110.  
  111. /*********************************************************************
  112. *
  113. * xdr_EVENT_TYPE -
  114. *
  115. */
  116.  
  117. bool_t xdr_EVENT_TYPE(xdrs, objp)
  118.     XDR *xdrs;
  119.     EVENT_TYPE *objp;
  120.  
  121.     {
  122.     if (!xdr_enum (xdrs, (enum_t *) objp))
  123.     return (FALSE);
  124.     return (TRUE);
  125.     }
  126.  
  127. /*********************************************************************
  128. *
  129. * xdr_RDB_EVENT -
  130. *
  131. */
  132.  
  133. bool_t xdr_RDB_EVENT (xdrs, objp)
  134.     XDR *xdrs;
  135.     RDB_EVENT *objp;
  136.  
  137.     {
  138.     if (!xdr_int (xdrs, &objp->status))
  139.     return (FALSE);
  140.     if (!xdr_int (xdrs, &objp->taskId))
  141.     return (FALSE);
  142.     if (!xdr_EVENT_TYPE (xdrs, &objp->eventType))
  143.     return (FALSE);
  144.     if (!xdr_int (xdrs, &objp->sigType))
  145.     return (FALSE);
  146.     return (TRUE);
  147.     }        
  148.  
  149. /*********************************************************************
  150. *
  151. * xdr_TASK_START -
  152. *
  153. */
  154.  
  155. bool_t
  156. xdr_TASK_START (xdrs, objp)
  157.     XDR *xdrs;
  158.     TASK_START *objp;
  159.  
  160.     {
  161.     if (!xdr_int (xdrs, &objp->status))
  162.     return (FALSE);
  163.     if (!xdr_int (xdrs, &objp->pid))
  164.     return (FALSE);
  165.     return (TRUE);
  166.     }
  167.  
  168.  
  169. /*********************************************************************
  170. *
  171. * xdr_SYMBOL_ADDR -
  172. *
  173. */
  174.  
  175. bool_t
  176. xdr_SYMBOL_ADDR (xdrs, objp)
  177.     XDR *xdrs;
  178.     SYMBOL_ADDR *objp;
  179.  
  180.     {
  181.     if (!xdr_int (xdrs, &objp->status))
  182.     return (FALSE);
  183.     if (!xdr_u_int (xdrs, &objp->addr))
  184.     return (FALSE);
  185.     return (TRUE);
  186.     }
  187.  
  188. /*********************************************************************
  189. *
  190. * xdr_SOURCE_STEP -
  191. *
  192. */
  193.  
  194. bool_t
  195. xdr_SOURCE_STEP (xdrs, objp)
  196.     XDR *xdrs;
  197.     SOURCE_STEP *objp;
  198.  
  199.     {
  200.     if (!xdr_int (xdrs, &objp->taskId))
  201.     return (FALSE);
  202.     if (!xdr_u_int (xdrs, &objp->startAddr))
  203.     return (FALSE);
  204.     if (!xdr_u_int (xdrs, &objp->endAddr))
  205.     return (FALSE);
  206.     return (TRUE);
  207.     }
  208.